#include <iostream>
// #include"CommonFiles/TurboAlloc.hpp"
// #include"TurboAlloc.hpp"
#include "Common.hpp"
#include "ObjectPool.hpp"
#include "TurboAlloc.hpp"
// void Alloc1()
// {
//     for(size_t i=0;i<5;i++)
//     {
//         void* ptr=TurboAlloc(6);
//     }
// }
// int main()
// {
//     ThreadCache tc;
// 	ObjectPool<ThreadCache> tcPool;
// 	ThreadCache* tcp = tcPool.New();
// 	cout << sizeof(tc) << endl;
// 	cout << sizeof(*tcp) << endl;
//     // cout<<tcPool._remainBytes<<endl;
// }
// int main()
// {
//     Span tc;
//     ObjectPool<Span> tcPool;
//     Span* sp=tcPool.New();
//     cout << sizeof(tc) << endl;
// 	cout << sizeof(*sp) << endl;
//     // cout<<tcPool._remainBytes<<endl;
// }
void TestConcurrentAlloc1()
{
    void *p1 = TurboAlloc(6);
    void *p2 = TurboAlloc(8);
    void *p3 = TurboAlloc(1);
    void *p4 = TurboAlloc(7);
    void *p5 = TurboAlloc(8);
    void *p6 = TurboAlloc(8);
    void *p7 = TurboAlloc(8);

    cout << p1 << endl;
    cout << p2 << endl;
    cout << p3 << endl;
    cout << p4 << endl;
    cout << p5 << endl;
    cout << p6 << endl;
    cout << p7 << endl;

    TurboFree(p1);
    TurboFree(p2);
    TurboFree(p3);
    TurboFree(p4);
    TurboFree(p5);
    TurboFree(p6);
    TurboFree(p7);
}
void TestAddressShift()
{
	PAGE_ID id1 = 2000;
	PAGE_ID id2 = 2001;
	char* p1 = (char*)(id1 << PAGE_SHIFT);
	char* p2 = (char*)(id2 << PAGE_SHIFT);
	while (p1 < p2)
	{
		cout << (void*)p1 << ":" << ((PAGE_ID)p1 >> PAGE_SHIFT) << endl;
		p1 += 8;
	}
}
void BigAlloc()
{
	void* p1 = TurboAlloc(257 * 1024);
	TurboFree(p1);

	void* p2 = TurboAlloc(129 * 8 * 1024);
	TurboFree(p2);
}
int main()
{
    // TestConcurrentAlloc1();
    //TestAddressShift();
    BigAlloc();
    return 0;
}